class LanguageDetector {
    constructor() {
        this.cache = new Map();
    }

    // 检测文本语言
    detect(text) {
        if (!text) return 'unknown';
        
        // 检查缓存
        const cachedResult = this.cache.get(text);
        if (cachedResult) return cachedResult;

        // 使用helpers.js中的detectLanguage函数
        const detectedLanguage = detectLanguage(text);
        
        // 缓存结果
        this.cache.set(text, detectedLanguage);
        
        return detectedLanguage;
    }

    // 检测页面主要语言
    detectPageLanguage() {
        // 首先检查HTML的lang属性
        const htmlLang = document.documentElement.lang;
        if (htmlLang) {
            return htmlLang.split('-')[0].toLowerCase();
        }

        // 收集页面上的文本
        const texts = [];
        const walker = document.createTreeWalker(
            document.body,
            NodeFilter.SHOW_TEXT,
            null,
            false
        );

        let node;
        while (node = walker.nextNode()) {
            const text = node.textContent.trim();
            if (text.length > 20) {  // 只考虑较长的文本
                texts.push(text);
            }
            if (texts.length >= 10) break;  // 限制样本数量
        }

        // 统计每种语言的出现次数
        const langCount = {};
        for (const text of texts) {
            const lang = this.detect(text);
            langCount[lang] = (langCount[lang] || 0) + 1;
        }

        // 返回出现最多的语言
        let maxLang = 'en';  // 默认英语
        let maxCount = 0;
        for (const [lang, count] of Object.entries(langCount)) {
            if (count > maxCount) {
                maxLang = lang;
                maxCount = count;
            }
        }

        return maxLang;
    }

    // 清除缓存
    clearCache() {
        this.cache.clear();
    }
}
